// HTML 支持的数学符号
function strNumDiscode(str) {
    str = str.replace(/&forall;/g, "∀");
    str = str.replace(/&part;/g, "∂");
    str = str.replace(/&exists;/g, "∃");
    str = str.replace(/&empty;/g, "∅");
    str = str.replace(/&nabla;/g, "∇");
    str = str.replace(/&isin;/g, "∈");
    str = str.replace(/&notin;/g, "∉");
    str = str.replace(/&ni;/g, "∋");
    str = str.replace(/&prod;/g, "∏");
    str = str.replace(/&sum;/g, "∑");
    str = str.replace(/&minus;/g, "−");
    str = str.replace(/&lowast;/g, "∗");
    str = str.replace(/&radic;/g, "√");
    str = str.replace(/&prop;/g, "∝");
    str = str.replace(/&infin;/g, "∞");
    str = str.replace(/&ang;/g, "∠");
    str = str.replace(/&and;/g, "∧");
    str = str.replace(/&or;/g, "∨");
    str = str.replace(/&cap;/g, "∩");
    str = str.replace(/&cap;/g, "∪");
    str = str.replace(/&int;/g, "∫");
    str = str.replace(/&there4;/g, "∴");
    str = str.replace(/&sim;/g, "∼");
    str = str.replace(/&cong;/g, "≅");
    str = str.replace(/&asymp;/g, "≈");
    str = str.replace(/&ne;/g, "≠");
    str = str.replace(/&le;/g, "≤");
    str = str.replace(/&ge;/g, "≥");
    str = str.replace(/&sub;/g, "⊂");
    str = str.replace(/&sup;/g, "⊃");
    str = str.replace(/&nsub;/g, "⊄");
    str = str.replace(/&sube;/g, "⊆");
    str = str.replace(/&supe;/g, "⊇");
    str = str.replace(/&oplus;/g, "⊕");
    str = str.replace(/&otimes;/g, "⊗");
    str = str.replace(/&perp;/g, "⊥");
    str = str.replace(/&sdot;/g, "⋅");
    return str;
}

//HTML 支持的希腊字母
function strGreeceDiscode(str) {
    str = str.replace(/&Alpha;/g, "Α");
    str = str.replace(/&Beta;/g, "Β");
    str = str.replace(/&Gamma;/g, "Γ");
    str = str.replace(/&Delta;/g, "Δ");
    str = str.replace(/&Epsilon;/g, "Ε");
    str = str.replace(/&Zeta;/g, "Ζ");
    str = str.replace(/&Eta;/g, "Η");
    str = str.replace(/&Theta;/g, "Θ");
    str = str.replace(/&Iota;/g, "Ι");
    str = str.replace(/&Kappa;/g, "Κ");
    str = str.replace(/&Lambda;/g, "Λ");
    str = str.replace(/&Mu;/g, "Μ");
    str = str.replace(/&Nu;/g, "Ν");
    str = str.replace(/&Xi;/g, "Ν");
    str = str.replace(/&Omicron;/g, "Ο");
    str = str.replace(/&Pi;/g, "Π");
    str = str.replace(/&Rho;/g, "Ρ");
    str = str.replace(/&Sigma;/g, "Σ");
    str = str.replace(/&Tau;/g, "Τ");
    str = str.replace(/&Upsilon;/g, "Υ");
    str = str.replace(/&Phi;/g, "Φ");
    str = str.replace(/&Chi;/g, "Χ");
    str = str.replace(/&Psi;/g, "Ψ");
    str = str.replace(/&Omega;/g, "Ω");
    str = str.replace(/&alpha;/g, "α");
    str = str.replace(/&beta;/g, "β");
    str = str.replace(/&gamma;/g, "γ");
    str = str.replace(/&delta;/g, "δ");
    str = str.replace(/&epsilon;/g, "ε");
    str = str.replace(/&zeta;/g, "ζ");
    str = str.replace(/&eta;/g, "η");
    str = str.replace(/&theta;/g, "θ");
    str = str.replace(/&iota;/g, "ι");
    str = str.replace(/&kappa;/g, "κ");
    str = str.replace(/&lambda;/g, "λ");
    str = str.replace(/&mu;/g, "μ");
    str = str.replace(/&nu;/g, "ν");
    str = str.replace(/&xi;/g, "ξ");
    str = str.replace(/&omicron;/g, "ο");
    str = str.replace(/&pi;/g, "π");
    str = str.replace(/&rho;/g, "ρ");
    str = str.replace(/&sigmaf;/g, "ς");
    str = str.replace(/&sigma;/g, "σ");
    str = str.replace(/&tau;/g, "τ");
    str = str.replace(/&upsilon;/g, "υ");
    str = str.replace(/&phi;/g, "φ");
    str = str.replace(/&chi;/g, "χ");
    str = str.replace(/&psi;/g, "ψ");
    str = str.replace(/&omega;/g, "ω");
    str = str.replace(/&thetasym;/g, "ϑ");
    str = str.replace(/&upsih;/g, "ϒ");
    str = str.replace(/&piv;/g, "ϖ");
    str = str.replace(/&middot;/g, "·");
    return str;
}

// 
function strcharacterDiscode(str) {
    // 加入常用解析
    str = str.replace(/&nbsp;/g, " ");
    str = str.replace(/&quot;/g, "'");
    str = str.replace(/&amp;/g, "&");
    // str = str.replace(/&lt;/g, '‹');
    // str = str.replace(/&gt;/g, '›');
        str = str.replace(/&lt;/g, "<");
    str = str.replace(/&gt;/g, ">");
    str = str.replace(/&#8226;/g, "•");
    return str;
}

// HTML 支持的其他实体
function strOtherDiscode(str) {
    str = str.replace(/&OElig;/g, "Œ");
    str = str.replace(/&oelig;/g, "œ");
    str = str.replace(/&Scaron;/g, "Š");
    str = str.replace(/&scaron;/g, "š");
    str = str.replace(/&Yuml;/g, "Ÿ");
    str = str.replace(/&fnof;/g, "ƒ");
    str = str.replace(/&circ;/g, "ˆ");
    str = str.replace(/&tilde;/g, "˜");
    str = str.replace(/&ensp;/g, "");
    str = str.replace(/&emsp;/g, "");
    str = str.replace(/&thinsp;/g, "");
    str = str.replace(/&zwnj;/g, "");
    str = str.replace(/&zwj;/g, "");
    str = str.replace(/&lrm;/g, "");
    str = str.replace(/&rlm;/g, "");
    str = str.replace(/&ndash;/g, "–");
    str = str.replace(/&mdash;/g, "—");
    str = str.replace(/&lsquo;/g, "‘");
    str = str.replace(/&rsquo;/g, "’");
    str = str.replace(/&sbquo;/g, "‚");
    str = str.replace(/&ldquo;/g, "“");
    str = str.replace(/&rdquo;/g, "”");
    str = str.replace(/&bdquo;/g, "„");
    str = str.replace(/&dagger;/g, "†");
    str = str.replace(/&Dagger;/g, "‡");
    str = str.replace(/&bull;/g, "•");
    str = str.replace(/&hellip;/g, "…");
    str = str.replace(/&permil;/g, "‰");
    str = str.replace(/&prime;/g, "′");
    str = str.replace(/&Prime;/g, "″");
    str = str.replace(/&lsaquo;/g, "‹");
    str = str.replace(/&rsaquo;/g, "›");
    str = str.replace(/&oline;/g, "‾");
    str = str.replace(/&euro;/g, "€");
    str = str.replace(/&trade;/g, "™");
    str = str.replace(/&larr;/g, "←");
    str = str.replace(/&uarr;/g, "↑");
    str = str.replace(/&rarr;/g, "→");
    str = str.replace(/&darr;/g, "↓");
    str = str.replace(/&harr;/g, "↔");
    str = str.replace(/&crarr;/g, "↵");
    str = str.replace(/&lceil;/g, "⌈");
    str = str.replace(/&rceil;/g, "⌉");
    str = str.replace(/&lfloor;/g, "⌊");
    str = str.replace(/&rfloor;/g, "⌋");
    str = str.replace(/&loz;/g, "◊");
    str = str.replace(/&spades;/g, "♠");
    str = str.replace(/&clubs;/g, "♣");
    str = str.replace(/&hearts;/g, "♥");
    str = str.replace(/&diams;/g, "♦");
    str = str.replace(/&#39;/g, "'");
    return str;
}

function strMoreDiscode(str) {
    str = str.replace(/\r\n/g, "");
    str = str.replace(/\n/g, "");
    str = str.replace(/code/g, "wxxxcode-style");
    return str;
}

function strDiscode(str) {
    str = strNumDiscode(str);
    str = strGreeceDiscode(str);
    str = strcharacterDiscode(str);
    str = strOtherDiscode(str);
    str = strMoreDiscode(str);
    return str;
}

function urlToHttpUrl(url, rep) {
    var patt1 = new RegExp("^//");
    var result = patt1.test(url);
    if (result) {
        url = rep + ":" + url;
    }
    return url;
}

module.exports = {
    strDiscode: strDiscode,
    urlToHttpUrl: urlToHttpUrl
};